大二的时候就学习了JS,但是那个时候主要还是在学习JS的DOM操作和事件,关于W3CSchool中JS的其他部分,东哥并没有深入的去讲解,但是我的性子耐不住啊,在学过DOM操作和事件以后,就去查了 W3CSchool、CSDN、敲了Demo、问了东哥,得出这个系列的博客。

构建JS的知识框架

关于JS在深入学习以后,发现东西真是多,类型转换、this指针、闭包、变量提升、作用域链、原型链……这里每个知识点都能单独拿出来说,不过这些知识点之间,没有任何逻辑关系。它们既不是并列关系,又不是递进关系,合在一起,也就没有任何意义,这样不符合我整理知识体系的习惯。我在看过一篇博客时,有位博主的观点我觉得很厉害,他把JS的体系设定为:文法、语义、运行时

这样,JavaScript的任何知识都不会出现在这个范围之外,这是知识架构的完备性。再往下细分一个层级,就变成了这个样子:

  • 文法
    • 词法
    • 语法
  • 语义
  • 运行时
    • 类型
    • 执行过程

其中,文法可以分成词法和语法,这来自编译原理的划分,同样是完备的。语义则跟语法具有一一对应关系,这里暂时不区分。

对于运行时部分,这个划分保持了完备性,我们都知道:程序 = 算法 + 数据结构,那么,对运行时来说,类型就是数据结构,执行过程就是算法。

再往下细分的时候,就会看到熟悉的概念了,词法中有各种直接量、关键字、运算符,语法和语义则是表达式、语句、函数、对象、模块,类型则包含了对象、数字、字符串等……

总结

学习的过程就是知识架构不断进化的过程,通过知识架构的自然延伸,我们就能更轻松的记忆一些原本难以记住的点,还可以发现被忽视的知识盲点。同时,在学习时有着一个良好的知识体系架构,在学习的时候就能把相应的知识分配到相应的知识体系划分之中,没有人能够记住所有的知识,在面试时,当不可避免地谈到一个记不住的知识,如果你能快速定位到它在知识架构中的位置,把一些相关的点讲出来,想必这也能捞回不少分。